package com.tcm.service;

import com.tcm.entity.Note;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tcm.entity.dto.param.NoteUpdateDto;
import com.tcm.entity.resp.PageR;
import com.tcm.entity.vo.NoteDetailResp;
import com.tcm.entity.vo.NoteListResult;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
* @author Guqier
* @description 针对表【ts_note(学生笔记表)】的数据库操作Service
* @createDate 2023-08-22 16:14:15
*/
public interface NoteService extends IService<Note> {

    /**
     * 学生保存笔记
     * @param dto 笔记参数
     * @param currUserId 当前登录用户ID
     * @return 处理结果，true为成功，false为数据库操作失败
     */
    @Transactional
    boolean saveNote(NoteUpdateDto dto, Long currUserId);

    /**
     * 删除笔记
     * @param itemId 题目ID
     * @param currUserId 当前登录用户ID
     * @return 处理结果，true为成功
     */
    @Transactional
    boolean removeNote(Long itemId, Long currUserId);

    /**
     * 根据题目获取笔记
     * @param itemId 题目ID
     * @param currUserId 当前登录用户ID
     * @return 笔记信息
     */
    NoteUpdateDto getNoteByItemId(Long itemId, Long currUserId);

    /**
     * 学生获取笔记列表
     * @param currUserId 当前登录用户ID
     * @return 笔记列表
     */
    List<NoteListResult> getStuNoteList(Long currUserId);

    /**
     * 获取笔记详细
     * @param current 当前笔记序数
     * @param currUserId 当前登录用户ID
     * @return 笔记详细
     */
    PageR<NoteDetailResp> getNoteDetail(Integer current, Long currUserId);

    /**
     * 教师获取学生笔记列表
     * @param page        当前页号
     * @param pageSize    页面大小
     * @param account     检索学生账号
     * @param currUserId  当前登录用户ID
     * @param currAccount 当前教师账号
     * @return 学生笔记列表
     */
    PageR<NoteListResult> getNoteListByTeacher(Integer page, Integer pageSize, String account, Long currUserId, String currAccount);
}
